﻿

function AgregarMasProductosParaDesvio() {
    window.desvioCtrl.AgregarProductos($('#inputCantProductos').val());
}


function DesvioMasivoCtrl(tipoDesvioParam) {

    var _I = this;

    _I.tipoDesvio = tipoDesvioParam;

    _I.cantidadCambios = 0;
    _I.cantidadMovimientos = 0;

    _I.TipoDesvio =
    {
        Cambio: 0,
        Movimiento: 1
    }

    this.AgregarProductos = function (cantidadProductos) {

        if (_I.tipoDesvio == _I.TipoDesvio.Cambio) {
            _I._AgregarProductoTipoCambio(cantidadProductos);
        }
        else if (_I.tipoDesvio == _I.TipoDesvio.Movimiento) {
            _I._AgregarProductoTipoMovimiento(cantidadProductos);
        }
    };

    this._AgregarProductoTipoCambio = function (cantidadProductos) {

        var i = _I.cantidadCambios;
        _I.cantidadCambios = _I.cantidadCambios + parseInt(cantidadProductos);

        while (i < _I.cantidadCambios) {

            var lastDiv = $('#pnlDesvioCambioItems div').last();
            lastDiv.after('<div class="divDesvioItem" id="divCambio_' + i + '" ></div>');
            var newDiv = $('#divCambio_' + i);

            newDiv.append($('#cboProductos').clone().attr('id', 'cboCambioProducto_' + i).attr('name', 'cboCambioProducto_' + i));
            newDiv.append($('#cboSemanas').clone().attr('id', 'cboCambioSemanas_' + i).attr('name', 'cboCambioSemanas_' + i));
            newDiv.append('<input type="text" class="desvioInput" id="inputCambio_' + i + '" name="inputCambio_' + i + '" />');

            $("input[id^=inputCambio_" + i).keyup(function () {
                _I.arrowMovementEventForInput(this);
            });

            i++;
        }
    };

    this._AgregarProductoTipoMovimiento = function (cantidadProductos) {
        var i = _I.cantidadMovimientos;
        _I.cantidadMovimientos = _I.cantidadMovimientos + parseInt(cantidadProductos);

        while (i < _I.cantidadMovimientos) {

            var lastDiv = $('#pnlDesvioMovimientoItems div').last();
            lastDiv.after('<div class="divDesvioItem" id="divMovimiento_' + i + '" ></div>');
            var newDiv = $('#divMovimiento_' + i);

            newDiv.append($('#cboProductos').clone().attr('id', 'cboMovimientoProducto_' + i).attr('name', 'cboMovimientoProducto_' + i));
            newDiv.append($('#cboSemanas').clone().attr('id', 'cboMovimientoSemanasDesde_' + i).attr('name', 'cboMovimientoSemanasDesde_' + i));
            newDiv.append($('#cboSemanas').clone().attr('id', 'cboMovimientoSemanasHasta_' + i).attr('name', 'cboMovimientoSemanasHasta_' + i));
            newDiv.append('<input type="text" class="desvioInput" id="inputMovimiento_' + i + '" name="inputMovimiento_' + i + '" />');

            $("input[id^=inputMovimiento_" + i).keyup(function () {
                _I.arrowMovementEventForInput(this);
            });

            i++;
        }
    };

    this.arrowMovementEventForInput = function (inputCtrl) {
        if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
            var sigoBuscando = true;
            while (sigoBuscando) {
                var inputNameParsed = inputCtrl.id.split('_');
                var fila = parseInt(inputNameParsed[1]);
                var nombre = inputNameParsed[0];
                // abajo         
                if (event.keyCode == 40) fila++;
                // arriba         
                if (event.keyCode == 38) fila--;

                var ctrlTargetName = '#' + nombre + '_' + fila;
                var inputCtrl = $(ctrlTargetName);
                if (inputCtrl.length != 0) {
                    sigoBuscando = false;
                    inputCtrl.focus();
                    inputCtrl.select();
                }
                else {
                    sigoBuscando = false;
                }
            }
        }
    }

    this.SaveDesvios = function () {

        _I._SaveDesvios(false);
    }

    this.AprobarDesvios = function () {

        _I._SaveDesvios(true);
    }

    this._SaveDesvios = function (aprobar) {

        var DesvioProductoSemanaListParam = new Array();

        var i = 0;
        var existQueryStringValue = true;
        var existeValor = false;

        while (existQueryStringValue) {

            var DesvioProductoSemana = {};
            existeValor = false;
            if (_I.tipoDesvio == _I.TipoDesvio.Cambio) {

                existQueryStringValue = $('#inputCambio_' + i).length > 0;
                if (existQueryStringValue) {
                    existeValor = $('#inputCambio_' + i).val() != '';
                    if (existeValor) {
                        DesvioProductoSemana["ProductoId"] = parseInt($('#cboCambioProducto_' + i).val());
                        DesvioProductoSemana["NumeroSemanaDesde"] = parseInt($('#cboCambioSemanas_' + i).val());
                        DesvioProductoSemana["Cantidad"] = parseInt($('#inputCambio_' + i).val());
                    }
                }
            }
            else if (_I.tipoDesvio == _I.TipoDesvio.Movimiento) {

                existQueryStringValue = $('#inputMovimiento_' + i).length > 0;
                if (existQueryStringValue) {

                    existeValor = $('#inputMovimiento_' + i).val() != '';
                    if (existeValor) {
                        DesvioProductoSemana["ProductoId"] = parseInt($('#cboMovimientoProducto_' + i).val());
                        DesvioProductoSemana["NumeroSemanaDesde"] = parseInt($('#cboMovimientoSemanasDesde_' + i).val());
                        DesvioProductoSemana["NumeroSemanaHasta"] = parseInt($('#cboMovimientoSemanasHasta_' + i).val());
                        DesvioProductoSemana["Cantidad"] = parseInt($('#inputMovimiento_' + i).val());
                    }
                }
            }

            if (existQueryStringValue && existeValor) {
                DesvioProductoSemanaListParam.push(DesvioProductoSemana);
            }

            i++;
        }

        var planProduccionId = parseInt($("#txtPlanProduccionId").val());

        var Proxy = new serviceProxy("/Svc/Planning.svc/");
        var Url = aprobar ? "AprobarDesviosMasivos" : "GuardarDesviosMasivos";
        var causaDesvioIntId = parseInt($('#cboDesvioCausa').val());

        Proxy.invoke(Url, { tipoDesvioInt: parseInt(_I.tipoDesvio), causaDesvioId: causaDesvioIntId, planProdId: planProduccionId, desvioProductoSemanaList: DesvioProductoSemanaListParam },
         function (result) {
             alert(result);
             history.go(-1);
         }, function (err) {
             alert(err);
         });
    }
}


